/*
 *代码由框架生成,任何更改都可能导致被代码生成器覆盖
 */
using VOL.Core.BaseProvider;
using VOL.Entity.DomainModels;
using VOL.Core.Utilities;

namespace VOL.demo.IServices
{
    public partial interface IGoodsBathService : IService<GoodsBatchModel>
    {
        /// <summary>
        /// 添加货品批次信息
        /// </summary>
        /// <param name="goodsBatch">货品批次信息</param>
        /// <returns></returns>
        WebResponseContent AddGoodsBatch(GoodsBatchModel goodsBatch);

        /// <summary>
        /// 批量添加货品批次信息
        /// </summary>
        /// <param name="goodsBatches">货品批次列表</param>
        /// <returns></returns>
        WebResponseContent BatchAddGoodsBatch(List<GoodsBatchModel> goodsBatches);

        /// <summary>
        /// 根据货品ID和仓库ID获取批次信息
        /// </summary>
        /// <param name="goodsId">货品ID</param>
        /// <param name="warehouseId">仓库ID</param>
        /// <returns></returns>
        List<GoodsBatchModel> GetBatchesByGoodsAndWarehouse(long goodsId, long warehouseId);

        /// <summary>
        /// 根据批次号获取批次信息
        /// </summary>
        /// <param name="batchNo">批次号</param>
        /// <returns></returns>
        GoodsBatchModel GetBatchByBatchNo(string batchNo);

        /// <summary>
        /// 更新货品批次信息
        /// </summary>
        /// <param name="goodsBatch">货品批次信息</param>
        /// <returns></returns>
        WebResponseContent UpdateGoodsBatch(GoodsBatchModel goodsBatch);

        /// <summary>
        /// 删除货品批次信息
        /// </summary>
        /// <param name="id">批次ID</param>
        /// <returns></returns>
        WebResponseContent DeleteGoodsBatch(long id);

        /// <summary>
        /// 获取即将过期的批次信息
        /// </summary>
        /// <param name="days">提前天数</param>
        /// <returns></returns>
        List<GoodsBatchModel> GetExpiringSoonBatches(int days);

        /// <summary>
        /// 根据仓库ID获取所有批次信息
        /// </summary>
        /// <param name="warehouseId">仓库ID</param>
        /// <returns></returns>
        List<GoodsBatchModel> GetBatchesByWarehouse(long warehouseId);
    }
}


